package xyz.cerberu.cet.search.utils;

import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.lucene.IKAnalyzer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @Name β世界
 * Created on 21:36
 * @Description IK分词器工具
 */
public class IKAnalyzerUtils {

    /** IK分词器(启动智能分词,为了避免分词得到的结果过多) **/
    private static final IKAnalyzer IK_ANALYZER = new IKAnalyzer(true);


    public static List<String> Analyzer(String text){
        List<String> list = new ArrayList<>();

        // 将字符串创建成一个token流，fieldName为标识，可以为空，但是不能为null
        try(TokenStream token = IK_ANALYZER.tokenStream("",text)) {
            // 将单词信息添加到AttributeSource中
            CharTermAttribute charTermAttribute = token.addAttribute(CharTermAttribute.class);
            token.reset();
            while(token.incrementToken()){
                list.add(charTermAttribute.toString());
            }
            token.end();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }
}
